import  { RootThunkAction }  from  '@/types/store'
import { http, setToken } from '@/utils';
import  type  { Token}  from '@/types/data'


// login 函数的参数类型
type  LoginParams= { mobile:string; code:string}
// login 接口的响应类型
type  LoginResponse= {
   message:string
   data: Token
}


// 登录验证 
export const  login= (values:LoginParams):RootThunkAction=>{
   return   async  (dispatch: (arg0: { type: string; payload: Token; }) => void)=>{
     // 发送请求 
     const  res= await  http.post<LoginResponse>('/authorizations',values )
     // 拿到返回的数据 
     const  tokens=  res.data.data  
      // 设置本地token  
      setToken(tokens)
      // 分发 action 将 token 保存到 redux state 中
      dispatch({type:'login/token', payload:tokens})
   }
}


// 获取验证码
export  const   getCode=(mobile:string)=>{
     return  async ()=>{
      await http.get(`/sms/codes/${mobile}`);
       // 注意：验证码是发送到手机上的，因此，不需要更新Redux状态
     }
}

